#ifndef ICHARACTER_HH
#define ICHARACTER_HH

#include <iostream>
#include <string>

// This abstract class defines the core interface for all characters in the 
// game, such as players and enemies. All derived classes must implement 
// these methods. 

class ICharacter{
    public:
        virtual ~ICharacter() = default;
        virtual bool isAlive() const = 0;
        virtual void attack(ICharacter& target) = 0;
        
        //得到基础信息
        virtual std::string getName() const = 0;
        virtual unsigned getHealth() const = 0;
        virtual unsigned getAttack() const = 0;
        virtual unsigned getDefense() const = 0;
        virtual std::string toString() const = 0;
        virtual ICharacter& operator-=(unsigned damage) = 0;
        virtual ICharacter& operator*(ICharacter& target) = 0;
};

#endif